#pragma once
#include "lee.h"
#include "Stream.h"

namespace Chhol{
	typedef struct {
		uint8 len;
		uint8 datas[127];
	}sCc9dPkg;

	class CC9D{
		private:
		sCc9dPkg* pkg_recving=0;
		int8 recv_ptr = 0;
		byte recv_crc = 0xff;
		byte max_len = 127;
		bool is_in_esc = false;		
		byte send_crc = 0xff;
		void sendByte(byte b);		
		void recvData(byte b);
		void recvEnd();
		void recvEsc(byte b);
		


		public:
		Stream* stream = 0;
		//外部程序想要发送包时，使用此函数开始一次发送。
		void send(sCc9dPkg* pkg_to_send);
		//解码器收到一个包后，会调用此函数进行包处理。
		virtual sCc9dPkg* receiced(sCc9dPkg * pkg_to_send);
		uint8 loop();
		void init(sCc9dPkg* pkg_recv,uint8 max_buff_len);
	};



}

